/**
 * 
 */
package br.gov.sjc.aluguelsocial;

import br.gov.sjc.classes.NumeroSias;
import br.gov.sjc.dao.BaseDAO;
import br.gov.sjc.utils.Sair;
import android.app.AlertDialog;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.Toast;

/**
 * @author rodrigo.ramos
 *
 */
public class DadosPessoaisActivity extends Sair {
	private static String TAG = "DadosPessoaisActivity";
	//Declara base de dados
	public static SQLiteDatabase BancoDados = null;
	public static String nomeBanco = BaseDAO.DATABASE_NAME;
	public void openDB(){
		try{
			BancoDados = openOrCreateDatabase(nomeBanco,MODE_WORLD_READABLE,null);
			Log.v(TAG, "BancoDados.openOrCreateDatabase();");
		}catch (Exception E){
			Log.e(TAG, "Erro em BancoDados.close();"+E.getMessage());
		} 
	}
	public void closeDB(){
      	BancoDados.close();
     	Log.v("DadosPessoaisActivity", "BancoDados.close();");
	}
	// Declara os Spinners
	Spinner spSexo, spEstadoCivil, spEstudaSN;
	Spinner spCor, spAlfabetizado, spFreqEscolaSN;
	Spinner spTrabalhaSN, spPCDSN;
	
    //Declara base de dados
    //SQLiteDatabase BancoDados = AluguelSocialAct.BancoDados ;
	
    //Pega o numero do Sias em uso atual
    	NumeroSias ns = new NumeroSias();
		int NumSias = ns.getNumeroDaFamilia();
		int idMembroSias = ns.getNumeroDoMembroDaFamilia();
		int ID;
		
	    //Declara Cursor
	    Cursor cVerifica;

	//Declara Strings
		String corValue;
	
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.dadospessoais);
        registerBaseActivityReceiver();
        
        
        /*****************************
         * Configuração dos Spinners
         * *************************** */
        //spSexo
        spSexo = (Spinner) findViewById(R.dp.spSexo);
        ArrayAdapter<CharSequence> adpSexo = ArrayAdapter.createFromResource(
        this, R.array.Sexo,
        android.R.layout.simple_spinner_item);
        adpSexo.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spSexo.setAdapter(adpSexo);
        
      //spEstadoCivil
        spEstadoCivil = (Spinner) findViewById(R.dp.spEstadoCivil);
        ArrayAdapter<CharSequence> adpEstadoCivil = ArrayAdapter.createFromResource(
        this, R.array.EstadoCivil,
        android.R.layout.simple_spinner_item);
        adpEstadoCivil.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spEstadoCivil.setAdapter(adpEstadoCivil);
        
        //spCor
         spCor = (Spinner) findViewById(R.dp.spCor);
        ArrayAdapter<CharSequence> adpCor = ArrayAdapter.createFromResource(
        this, R.array.Cor,
        android.R.layout.simple_spinner_item);
        adpCor.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spCor.setAdapter(adpCor);
//        long corSp = spCor.getSelectedItemId();
//        String values [] =  getResources().getStringArray(R.array.CorId);
//        String valor = corSp+"";
//        corValue = values [Integer.parseInt(valor)];
        
        //spEstudaSN
        spEstudaSN = (Spinner) findViewById(R.dp.spEstudaSN);
        ArrayAdapter<CharSequence> adpEstudaSN = ArrayAdapter.createFromResource(
        this, R.array.SN,
        android.R.layout.simple_spinner_item);
        adpEstudaSN.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spEstudaSN.setAdapter(adpEstudaSN);

        //spAlfabetizado
         spAlfabetizado = (Spinner) findViewById(R.dp.spAlfabetizado);
        ArrayAdapter<CharSequence> adpAlfabetizado = ArrayAdapter.createFromResource(
        this, R.array.Alfabetizacao,
        android.R.layout.simple_spinner_item);
        adpAlfabetizado.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spAlfabetizado.setAdapter(adpAlfabetizado);

        //spFreqEscolaSN
         spFreqEscolaSN = (Spinner) findViewById(R.dp.spFreqEscolaSN);
        ArrayAdapter<CharSequence> adpFreqEscolaSN = ArrayAdapter.createFromResource(
        this, R.array.SN,
        android.R.layout.simple_spinner_item);
        adpFreqEscolaSN.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spFreqEscolaSN.setAdapter(adpFreqEscolaSN);
        
        //spTrabalhaSN
        spTrabalhaSN = (Spinner) findViewById(R.dp.spTrabalhaSN);
       ArrayAdapter<CharSequence> adpTrabalhaSN = ArrayAdapter.createFromResource(
       this, R.array.SN,
       android.R.layout.simple_spinner_item);
       adpTrabalhaSN.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
       spTrabalhaSN.setAdapter(adpTrabalhaSN);
       
       //spPCDSN
       spPCDSN = (Spinner) findViewById(R.dp.spPCDSN);
      ArrayAdapter<CharSequence> adpPCDSN = ArrayAdapter.createFromResource(
      this, R.array.SN,
      android.R.layout.simple_spinner_item);
      adpPCDSN.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
      spPCDSN.setAdapter(adpPCDSN);
       
       
       
        /** **********************************
         *  Fim da Configuração dos Spinners
         ** ********************************** */
        
        // Declara Buttons
        Button btnDPVoltar, btnDPIr;
        
        /** Inicia o set de dados caso haja dados */
        if (verificaRegistro(NumSias)){
        	setarDados(ID);
        	Log.v("DadosPessoaisActivity", "onCreate() Com dados do SiasN: "+NumSias+"ID: "+ID);
        }else{
        	//Num tem seNão
        	Log.v("DadosPessoaisActivity", "onCreate() Com dados vazios ");
        }

        
        /** Acao do botao Voltar */
        btnDPVoltar = (Button) findViewById(R.dp.btnVoltar);
        btnDPVoltar.setOnClickListener(new View.OnClickListener() {
            
            public void onClick(View arg0) {
                /** InitComponents */
            	
            	Intent ittDPVoltar = new Intent(getApplicationContext(), NomeActivity.class);
                
                startActivity(ittDPVoltar);
            }
        });//fim acao do botao voltar
        
        
        /** Acao do botao Prox */
        btnDPIr = (Button) findViewById(R.dp.btnIr);
        btnDPIr.setOnClickListener(new View.OnClickListener() {
            
            public void onClick(View arg0) {
            	
           	  if (verificaRegistro(NumSias)){
         		  alteraRegistro(ID);
	       	  }else{
	        	//salva dados
            	salvaDados(NumSias,idMembroSias,spSexo.getSelectedItem().toString(),
            			spEstadoCivil.getSelectedItem().toString(),spEstudaSN.getSelectedItem().toString(),
            			spCor.getSelectedItem().toString(),spAlfabetizado.getSelectedItem().toString(),
            			spFreqEscolaSN.getSelectedItem().toString(),spTrabalhaSN.getSelectedItem().toString(),
            			spPCDSN.getSelectedItem().toString());
               } 
           	  /** InitComponents */
                Intent ittDPIr = new Intent(getApplicationContext(), EscolaridadeActivity.class);
               
                startActivity(ittDPIr);
	       	  
            }
        });//fim acao do botao Px
    } 
    
 	public void salvaDados(int string,int string1, String string2, String string3, String string4, String string5, String string6, String string7, String string8, String string9){
 		openDB();
 		try{
			String SQL = "INSERT INTO tab_DadosPessoais(SiasN,idMembro,Sexo, EstCivil,Estuda, Cor, " +
					"Alfabetiza, FreqEscola,Trabalha, PCD ) VALUES ("+string+","+string1+", '"+string2+"','"+string3+"', " +
							"'"+string4+"','"+string5+"', '"+string6+"', '"+string7+"', '"+string8+"', '"+string9+"')";
			BancoDados.execSQL(SQL);
			Toast.makeText(DadosPessoaisActivity.this, "Salvo em familia:"+NumSias+"/"+idMembroSias, Toast.LENGTH_LONG).show();
		}catch(Exception erro) {
			mensagemAlerta("Erro","Erro Ao Gravar " );
			Log.e("DadosPessoaisActivity", "salvaDados() ERRO: "+ erro.getMessage());
		}
 		closeDB();
	}
	public boolean verificaRegistro(int NumeroSias){
		boolean Retorno = false;
		openDB();
		try{
			String SQLQuery = "Select * from tab_DadosPessoais WHERE SiasN="+NumeroSias+" AND idMembro="+idMembroSias;
			cVerifica = BancoDados.rawQuery(SQLQuery, null);
			if (cVerifica.getCount() !=0 ){
				cVerifica.moveToFirst();
				ID = cVerifica.getInt(cVerifica.getColumnIndex("_id"));
				Retorno = true;
				Log.i("DadosPessoaisActivity", "verificaRegistro() TRUE ");
			}
		}catch (Exception Err){
			//mensagemAlerta("Erro","Erro Encontrado:"+Err.getMessage());
			Log.e("DadosPessoaisActivity", "verificaRegistro() "+Err.getMessage());
		}
		closeDB();
		return Retorno;
	}
	   public void setarDados(int Posicao){
		   openDB();
	    	try {
	    		String SQL2 = "SELECT * FROM tab_DadosPessoais WHERE _id="+Posicao+" ";
	    		Log.v("DadosPessoaisActivity", "setarDados() Posição: "+Posicao);
	    		Cursor c = BancoDados.rawQuery(SQL2, null);
	    		c.moveToFirst();
	    		 
	    		do {
    			
	    	        //spSexo
	    			ArrayAdapter<CharSequence> adpUSexo = ArrayAdapter.createFromResource(
	    			        this, R.array.Sexo,
	    			        android.R.layout.simple_spinner_item);
	    			adpUSexo.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
	    			int iUSexo = adpUSexo.getPosition(c.getString(c.getColumnIndex("Sexo")));
	    			spSexo.setSelection(iUSexo); 
	    			
	    	        //spEstadoCivil
	    			ArrayAdapter<CharSequence> adpUEstCivil = ArrayAdapter.createFromResource(
	    			        this, R.array.EstadoCivil,
	    			        android.R.layout.simple_spinner_item);
	    			adpUEstCivil.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
	    			int iUEstCivil = adpUEstCivil.getPosition(c.getString(c.getColumnIndex("EstCivil")));
	    			spEstadoCivil.setSelection(iUEstCivil);

	    	        //spEstudaSN
	    			ArrayAdapter<CharSequence> adpUEstudaSN = ArrayAdapter.createFromResource(
	    			        this, R.array.SN,
	    			        android.R.layout.simple_spinner_item);
	    			adpUEstudaSN.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
	    			int iUEstudaSN = adpUEstudaSN.getPosition(c.getString(c.getColumnIndex("Estuda")));
	    			spEstudaSN.setSelection(iUEstudaSN);
	    			
	    	        //spCor
	    			ArrayAdapter<CharSequence> adpUCor = ArrayAdapter.createFromResource(
	    			        this, R.array.Cor,
	    			        android.R.layout.simple_spinner_item);
	    			adpUCor.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
	    			int iUCor = adpUCor.getPosition(c.getString(c.getColumnIndex("Cor")));
	    			spCor.setSelection(iUCor);
	    			
	    	        //spAlfabetizado
	    			ArrayAdapter<CharSequence> adpUAlfabetizado = ArrayAdapter.createFromResource(
	    			        this, R.array.Alfabetizacao,
	    			        android.R.layout.simple_spinner_item);
	    			adpUAlfabetizado.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
	    			int iUAlfabetizado = adpUAlfabetizado.getPosition(c.getString(c.getColumnIndex("Alfabetiza")));
	    			spAlfabetizado.setSelection(iUAlfabetizado);
	    			
	    	        //spFreqEscolaSN
	    			ArrayAdapter<CharSequence> adpUFreqEscolaSN = ArrayAdapter.createFromResource(
	    			        this, R.array.SN,
	    			        android.R.layout.simple_spinner_item);
	    			adpUFreqEscolaSN.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
	    			int iUFreqEscolaSN = adpUFreqEscolaSN.getPosition(c.getString(c.getColumnIndex("FreqEscola")));
	    			spFreqEscolaSN.setSelection(iUFreqEscolaSN);
	    			
	    	        //spTrabalhaSN
	    			ArrayAdapter<CharSequence> adpUTrabalhaSN = ArrayAdapter.createFromResource(
	    			        this, R.array.SN,
	    			        android.R.layout.simple_spinner_item);
	    			adpUTrabalhaSN.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
	    			int iUTrabalhaSN = adpUTrabalhaSN.getPosition(c.getString(c.getColumnIndex("Trabalha")));
	    			spTrabalhaSN.setSelection(iUTrabalhaSN);
	    			
	    	        //spPCDSN
	    			ArrayAdapter<CharSequence> adpUPCDSN = ArrayAdapter.createFromResource(
	    			        this, R.array.SN,
	    			        android.R.layout.simple_spinner_item);
	    			adpUPCDSN.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
	    			int iUPCDSN = adpUPCDSN.getPosition(c.getString(c.getColumnIndex("PCD")));
	    			spPCDSN.setSelection(iUPCDSN);
	    			
	    			}while(c.moveToNext());

	    		Log.v("DadosPessoaisActivity", "setarDados() TRUE ");
	    	}catch (Exception E){
	    		mensagemAlerta("Erro","Ocorreu um erro inesperado");
	    		Log.e("DadosPessoaisActivity", "Erro em setarDados() "+E.getMessage());
	    	}
	    	closeDB();
	    }
		// Declara os Spinners
		//Spinner spSexo, spEstadoCivil, spEstudaSN;
		//Spinner spCor, spAlfabetizado, spFreqEscolaSN;
	    public void alteraRegistro(int id){
	    	openDB();
	    	try{
	    		String uSQL = "UPDATE tab_DadosPessoais SET " +
	    				" Sexo='"+spSexo.getSelectedItem().toString()+"'," +
	    				" EstCivil='"+spEstadoCivil.getSelectedItem().toString()+"'," +
	    				" Estuda='"+spEstudaSN.getSelectedItem().toString()+"'," +
	    				" Cor='"+spCor.getSelectedItem().toString()+"'," +
	    				" Alfabetiza='"+spAlfabetizado.getSelectedItem().toString()+"'," +
	    				" FreqEscola='"+spFreqEscolaSN.getSelectedItem().toString()+"'," +
	    				" Trabalha ='"+spTrabalhaSN.getSelectedItem().toString()+"'," +
	    				" PCD ='"+spPCDSN.getSelectedItem().toString()+"'" +
	    				" WHERE _id="+id+" ";
	    		BancoDados.execSQL(uSQL);
	    		Toast.makeText(DadosPessoaisActivity.this, "Alterado", Toast.LENGTH_LONG).show();
	    		Log.v("DadosPessoaisActivity", "alteraRegistro() realizado com sucesso ");
	    	}catch(Exception Err){
	    		mensagemAlerta("Erro","Ocorreu um erro inesperado");
	    		Log.e("DadosPessoaisActivity", "alteraRegistro() erro: "+Err.getMessage());
	    		
	    	}
	    	closeDB();
	    }

	public void mensagemAlerta(String AlertTitle, String MSGAlert){
		AlertDialog.Builder Mensagem = new AlertDialog.Builder(DadosPessoaisActivity.this);
		Mensagem.setTitle(AlertTitle);
		Mensagem.setMessage(MSGAlert);
		Mensagem.setNeutralButton("Ok", null);
		Mensagem.show();
	}
	@Override
	protected void onResume() {
		//quando a Activity main receber o foco novamente abre-se novamente a conexão
		
		//método responsável pela atualiza da lista de dados na tela
		//adapter.notifyDataSetChanged();
		super.onResume();
	}
	@Override
	protected void onPause() {

		//toda vez que o programa peder o foco fecha-se a conexão com o BD
		
		super.onPause();
	}
    @Override
    protected void onDestroy() {
    	super.onDestroy();
    	unRegisterBaseActivityReceiver();
    	finish();
    }
}
